package com.capgemini.tabbedactionbar; import android.app.ActionBar.Tab; import android.app.ActionBar.TabListener; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.app.FragmentTransaction; import android.content.Context; import android.util.Log; public class SimpleTabListener implements TabListener { Context _context; String _tabFragmentClassName; Fragment _tabFragment = null; int _viewGroupId; public SimpleTabListener(Context context, String tabFragmentClassName, int viewGroupId) { _context = context; _tabFragmentClassName = tabFragmentClassName; _viewGroupId = viewGroupId; } @Override public void onTabSelected(Tab tab, FragmentTransaction fragmentTransaction) { if(_tabFragment == null) { _tabFragment = Fragment.instantiate(_context, _tabFragmentClassName); fragmentTransaction.add(_viewGroupId, _tabFragment); } else fragmentTransaction.attach(_tabFragment); } @Override public void onTabUnselected(Tab tab, FragmentTransaction fragmentTransaction) { fragmentTransaction.detach(_tabFragment); } @Override public void onTabReselected(Tab tab, FragmentTransaction fragmentTransaction) { } public static void SetupTabbedNavigation(Activity containingActivity, int displayNameResourceId, int fragmentClassNameResourceId) { SetupTabbedNavigation(containingActivity, displayNameResourceId, fragmentClassNameResourceId, android.R.id.content); } public static void SetupTabbedNavigation(Activity containingActivity, int displayNameResourceId, int fragmentClassNameResourceId, int viewGroupId) { // Load the display values and class names from the resources String[] displayNameList = containingActivity.getResources().getStringArray(displayNameResourceId); String[] fragmentList = containingActivity.getResources().getStringArray(fragmentClassNameResourceId); if(fragmentList.length != displayNameList.length) { Log.e("SetupTabbedNavigation", "ERROR - List of fragment class names and list of display names do not contain the same number of entries"); return ; } ActionBar actionBar = containingActivity.getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.TabListener tablistener; for (int i=0; i < fragmentList.length; i++) { tablistener = new SimpleTabListener(containingActivity, fragmentList[i], viewGroupId); actionBar.addTab( actionBar.newTab() .setText(displayNameList[i]) .setTabListener(tablistener) ); } } }